dedicated-pooler-logs.tsx 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { useParams } from 'common'
  2. import { useRouter } from 'next/router'
  3. import { useEffect } from 'react'
  4. import { LogoLoader } from 'ui'
  5. import { LogsTableName } from '@/components/interfaces/Settings/Logs/Logs.constants'
  6. import { LogsPreviewer } from '@/components/interfaces/Settings/Logs/LogsPreviewer'
  7. import DefaultLayout from '@/components/layouts/DefaultLayout'
  8. import LogsLayout from '@/components/layouts/LogsLayout/LogsLayout'
  9. import { useCheckEntitlements } from '@/hooks/misc/useCheckEntitlements'
  10. import type { NextPageWithLayout } from '@/types'
  11. export const LogPage: NextPageWithLayout = () => {
  12. const router = useRouter()
  13. const { ref } = useParams()
  14. const { hasAccess: hasDedicatedPooler, isLoading: isLoadingEntitlement } =
  15. useCheckEntitlements('dedicated_pooler')
  16. useEffect(() => {
  17. // Redirect to pooler logs if org is not entitled to dedicated pooler
  18. if (!isLoadingEntitlement && !hasDedicatedPooler) {
  19. router.push(`/project/${ref}/logs/pooler-logs`)
  20. }
  21. }, [hasDedicatedPooler, isLoadingEntitlement, ref, router])
  22. // Prevent showing logs while checking entitlement
  23. if (isLoadingEntitlement || !hasDedicatedPooler) {
  24. return <LogoLoader />
  25. }
  26. return (
  27. <LogsPreviewer
  28. projectRef={ref as string}
  29. condensedLayout={true}
  30. tableName={LogsTableName.PGBOUNCER}
  31. queryType={'pgbouncer'}
  32. />
  33. )
  34. }
  35. LogPage.getLayout = (page) => (
  36. <DefaultLayout>
  37. <LogsLayout title="Dedicated Pooler Logs">{page}</LogsLayout>
  38. </DefaultLayout>
  39. )
  40. export default LogPage